#include"RBTree.hpp"

namespace my_space
{
    template<class K>
    class set
    {
        struct SetKeyOfT
        {
            //对方用一个MapKeyOfT类型的对象调用()时，根据其传来的参数pair<K,V>返回一个key
            const K& operator()(const K& key)
            {
                return key;
            }
        };
    
    public:
        //typedef typename RBTree<K,pair<K,V>,MapKeyOfT>::iterator iterator;//方案一
        typedef struct __map_iterator<K> iterator;//方案二

        iterator begin()
        {
            return _rbt.begin();//返回红黑树的最左子叶
        }
        iterator end()
        {
            return _rbt.end();
        }

        bool insert(const K& key)
        {
            return _rbt.Insert(key);
        }

        void InOrder()
        {
            _rbt.InOrder();
        }

        bool Is_Balance()
        {
            return _rbt.Is_Balance();
        }

    private:
        RBTree<K,K,SetKeyOfT> _rbt;
    };
}